What is systolic arrays?

Systolic arrays are a type of parallel computing architecture that are optimized for performing computations on large amounts of data. In a systolic array, multiple processing elements (PEs) are arranged in a regular grid, with each PE connected to its neighboring PEs. The input data is then fed into the array, with each PE processing a portion of the input data and passing the results along to its neighbors. This allows the systolic array to perform computations in parallel, with each PE completing a small portion of the overall computation.

Systolic arrays are particularly well-suited for performing matrix operations, such as matrix multiplication and matrix inversion. They are also used in applications such as digital signal processing, image processing, and neural networks. One of the key advantages of systolic arrays is their ability to perform high-speed computations with relatively low power consumption. Additionally, because the PEs are tightly-coupled, systolic arrays can achieve very low latency and high bandwidth. However, constructing a systolic array can be a complex and time-consuming process, and optimizing the array for a particular application may require significant domain expertise.